/*
 * 18-mar-2007 
 */
package futbol.tacticas.concursantes2007.Chuky.chuky.equipo;

import java.awt.Point;
import java.util.ArrayList;

import futbol.tacticas.concursantes2007.Chuky.chuky.entrenador.*;
import futbol.tacticas.concursantes2007.Chuky.chuky.futbolista.*;

/**
 *
 * @author Joan Crosas
 */
public class Defensa02 extends Futbolista {
	private static final int NUMERO = 2;
	private static final int FUERZA = 5;
	private static final Point POSICION_INICIAL = new Point( -130, 30 );
	private static final Point POSICION_ATAQUE = new Point( -116, 34 );
	private static final Point POSICION_DEFENSA = new Point( -130, 30 );
	
	private Accion accion;
	private Point posicionPreferida;
	
	/**
	 * @param numero
	 * @param posicionInicial
	 */
	public Defensa02( EntrenadorListener entrenadorListener ) {
		super( NUMERO, FUERZA, POSICION_INICIAL, entrenadorListener );
		posicionPreferida = POSICION_DEFENSA;
	}
	
	public void prepararAccion( ArrayList<Futbolista> amigos ) {
		if( isBalonEncima()  ) {
			accion = accionPase( amigos );
			
		} else {
			accion = accionCorrer( getPosicionPreferida() );
		}
		
		if( accion == null ) {
			accion = new AccionCorrer( this, getPosicionPreferida() );
		}
	}
	
	/**
	 * @param amigos
	 * @return
	 */
	private Accion accionPase( ArrayList<Futbolista> amigos ) {
		AnalizadorPases analizadorPases = new AnalizadorPases( this, amigos );
		analizadorPases.analizar();
		analizadorPases.filtrarPases( false );
		
		Pase pase = null;
		pase = analizadorPases.getMejorPase();
		
		// no hemos encontrado ningn pase, pero tenemos que quitarnos el baln de encima
		if( pase == null ) {
			pase = analizadorPases.getPaseMenosMalo();
		}

		Accion accionPase = null;
		if( pase != null ) {
			accionPase = new AccionGolpearBalon( this, pase.getAngulo(), 100 );
			if( pase.getAnotacion() != null ) {		
				getEntrenadorListener().startAnotacion();
				getEntrenadorListener().addAnotacion( pase.getAnotacion() );
			}
		}

		return accionPase;

	}
	
	public Accion getAccion() {
		return accion;
	}
	
	public Point getPosicionPreferida() {
		if( getTipoJuego() == Entrenador.ATAQUE && getBalon().getPosicionBalon().x > 10 ) {
			posicionPreferida = POSICION_ATAQUE;
		} else {
			posicionPreferida = POSICION_DEFENSA;
		}
		return posicionPreferida;
	}

}
